More Viable Plasma
m0t0k1ch1.icon More Viable Plasma の概要を理解する
m0t0k1ch1.icon Minimal Viable Plasma の真っ当な改善案なので、何が改善したのかを中心に把握する
---.icon
m0t0k1ch1.icon 注意
ここ で整理しなおされているので、そっちを読んだ方がよさそう (特に exit game の)仕様が難解なので致し方なしである
---.icon
TL;DR
We propose an alternative to confirmation signatures and (semi) formalize the properties of any valid Plasma MVP exit game. Our game provides significantly improved UX at the cost of a two-period challenge-response scheme in the worst case.
confirm sig に対する代案を提案し、Plasma MVP の exit ゲームの性質を(半)形式化する。最悪の場合、2 つの期間からなる challenge-response スキームが必要となるが、新しく提案するゲームによって UX は大幅に改善する。
m0t0k1ch1.icon Minimal Viable Plasma における confirm sig は前提知識として把握しておいた方がよい
---.icon
Background
m0t0k1ch1.icon 流れが速い Plasma 界隈においては各論に振り回されないように全体的な潮流を把握するのが重要だと思うので、背景もきちんと読むべし
Exit Priority
The original Plasma MVP specification requires that exits be processed in priority order. Each exit references an unspent transaction output, and priority is determined by the age of the transaction output. This is generally necessary so that valid exits can be processed before exits stemming from invalid “out of nowhere” transactions. More information about exit priority can be found at the OmiseGO research repository here. オリジナルの Plasma MVP の仕様 は、優先度が高い順に exit が処理されることを要求する。各 exit はトランザクションの未使用出力を参照しており、優先度はトランザクション出力の年齢によって決定される。大まかに言うと、正当な exit が不正な「どこからともなくやってきた」トランザクションに由来する exit より先に処理するためにこうする必要がある。exit の優先度に関するより詳細な情報は OmiseGO の研究レポジトリ に記載されている。 This post introduces a new way to calculate exit priority, which we call “youngest-input” priority. Instead of ordering exits by the age of the output, we now order exits by the age of the youngest input. This has the effect that exits of outputs, even if they’re included in withheld blocks after “out of nowhere” transactions, will be correctly processed as long as they only stem from valid inputs.
ここでは、exit の優先度を計算する新しい方法を導入し、それを「最も若い入力」を基準とした優先度と呼ぶこととする。出力の年齢で exit を並べる代わりに、(その出力が含まれるトランザクションの)最も若い入力の年齢で exit を並べる。これにより、出力が正当な入力に由来する限り、出力の exit は正しく処理される。たとえ出力が「どこからともなくやってきた」トランザクションの後で生成され withhold されたブロックに含まれていたとしても。
Exit Game
Plasma MVP also introduces an exit game, whereby some outputs are deemed “exitable”. This game correctly incentivizes parties to challenge a “non-exitable” output. For example, spent outputs are considered “non-exitable.” The game requires the exitor to place a bond, such that anyone who knows the output to be spent is sufficiently incentivized to reveal the transaction and take the bond.
Plasma MVP で導入されている exit ゲームにおいて、いくつかの出力は「exit 可能」とみなされる。このゲームでは、参加者は「exit 不可能」な出力に対する challenge を行うよう正しく動機づけされる。例えば、使用済みの出力は「exit 不可能」とみなされる。exit する参加者に対しては担保の提供が要求されるので、出力が使用済みであることを知っている人は誰でもトランザクションを公開して担保を奪う十分な動機がある。
The basic exit game has one challenge condition - outputs must not be spent. This condition is enough to make the exit game complete because of a construction of confirmation signatures. Basically, both parties to a transaction must “sign off” on a transaction’s inclusion in the chain. Honest clients won’t sign off on withheld (and therefore possibly invalid) transactions, so honest clients won’t accept funds that might be stolen by the operator (discussed more below).
基本的な exit ゲームにおける challenge 条件は「出力が使用済みであってはいけない」である。confirm sig を前提とすれば、この条件は exit ゲームを完全に行うために十分である。基本的には、取引を行うグループの双方が、トランザクションがチェーンに取り込まれることを「承認」する必要がある。誠実なクライアントは withhold された(不正な可能性のある)トランザクションを承認しない。すなわち、オペレータに盗まれるかもしれない資金は受け入れない(詳細は以下)。
In-flight Transactions
Without confirmation signatures, the above exit game is exploitable by the operator in two ways:
confirm sig がない場合、上記の exit ゲームは以下の 2 通りの方法でオペレータによってハックされる可能性がある。
1. The operator may include, but withhold, a transaction, and later grief the sender(s) by challenging exits from the transaction’s inputs.
2. More importantly, the operator may include a transaction after some invalid “out of nowhere” transaction that creates money for the operator. Standard exit priority dictates that the operator’s outputs will be processed before the valid outputs, thereby stealing money.
1. オペレータはトランザクションを withhold し、そのトランザクションの入力(となっている出力)の exit に challenge することで送金者を悩ませるかもしれない。
2. より重要なのは、オペレータが「どこからともなくやってきた」不正なトランザクションに続けて自身に対してお金を生成するようなトランザクションを含めるかもしれないということ。標準的な exit 優先度だと、正当な出力よりも先にオペレータの出力が処理されてしまうため、お金が盗まれる。
Our new exit game solves these problems without confirmation signatures.
新しい exit ゲームは、confirm sig なしでこれらの問題を解決する。
---.icon
Construction
m0t0k1ch1.icon < しっかりとした提案なので、1 つ 1 つ切り分けて把握していく
---.icon
m0t0k1ch1.icon memo
Minimal Viable Plasma の課題であった confirm sig 関連の仕様を綺麗に改善した提案だと思う。
古い出力から順に exit が処理される Minimal Viable Plasma では、オペレータの不正な exit 割り込みなどを防ぐために confirm sig を導入していたという背景がある。が、confirm sig には以下のような問題が存在した(自分の把握する限り)。
単純にプロセスとして面倒
confirm sig の保持コストが増大する
トランザクションの最終承認権限を送金者が持っている
ブロックに含まれたトランザクションであっても、承認しないことで実質キャンセル扱いできる
例えば DEX などの場合、最後に taker が maker にお伺いを立てないと取引が成立しない
仕組みとしてわかりづらい
自分も confirm sig がどう機能するのか分からずに彷徨っていた時期があった
ethresear.ch の議論を眺める限り、自分以外でも同様な状態になっていた人が多かったように思う
これに対し、More Viable Plasma では confirm sig なしでもオペレータの不正な exit 割り込みから資産を保護できるよう、exit する出力が含まれるトランザクションの入力となっている最も新しい出力を基準として exit の優先度づけを行っている。これまでに承認された正当な出力がシーケンシャルに並んでいれば、オペレータは架空の出力を割り込ませることはできず、架空の出力を入力としたトランザクションの出力の exit は優先度が低くならざる(既存の正当な出力より新しくならざる)をえないため、例えオペレータがその exit を提出したとしても、ユーザーは正当な出力を先に exit することが可能となる。